package cn.melonlib.cores.model.anno;

import cn.melonlib.cores.commons.model.entity.IEntity;
import cn.melonlib.cores.model.enums.CascadeType;

import java.io.Serializable;
import java.lang.annotation.*;

/**
 * 级联关系，用于处理删除、更新级联对象之间的关系
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface ModelCascade {

    /**
     * 关联类型
     * @return
     */
    Class<? extends IEntity<? extends Serializable>> type();

    /**
     * 关联字段，数据级联关联字段
     * @return
     */
    String key();

    /**
     * 处理字段，数据发生改变以后跟着改变的字段
     * @return
     */
    String field() default "";

    /**
     * 自定处理对象，如果位空字符串，使用默认处理对象
     * @return
     */
    String action() default "";

    /**
     * 处理类型
     * @return
     */
    CascadeType cascadeTypes() default  CascadeType.DELETE;

}
